<?php
/**
 * 分页接口
 *
 * @author iwind <iwind.iwind@gmail.com>
 * @link http://www.4kiki.net/
 * @version $Id: IPager.php 312 2008-04-23 16:29:38Z iwind $
 * @package net.4kiki.pager
 */

/**
 * 分页接口
 *
 * <code>
 * import("net.4kiki.pager.*");
 * $pager = new ISimplePager();
 * $pager->setContentSize(100);
 * $pager->setPageSize(21);
 * $pager->setKeyword("pager");
 * $pager->setPath("pager.php");
 * $pager->setQuery("a=b&pager=%{PAGE_NO}&d=1");
 * echo $pager;
 * echo "startOffset:" . $pager->getStartOffset();
 * </code>
 * 
 * @version $Id: IPager.php 312 2008-04-23 16:29:38Z iwind $
 * @package net.4kiki.pager
 */
interface IPager {
	/**
	 * 分页中代码当前页码的常量
	 *
	 */
	const PAGER_VARIABLE_STRING = "%{PAGE_NO}";	
	
	/**
	 * 转换成字符串
	 *
	 * @return string
	 */
	public function __toString();
	
	/**
	 * 取得当前页码
	 * 
	 * @return integer
	 */
	public function getCurrentPageNo();
	
	/**
	 * 取得记录开始的偏移量
	 *
	 * @return integer
	 */
	public function getStartOffset();
	
	/**
	 * 设置内容总数
	 *
	 * @param integer $contentSize 内容总数
	 */
	public function setContentSize($contentSize);
	
	/**
	 * 设置分页链接中的关键字
	 *
	 * @param string $keyword 关键字
	 */
	public function setKeyword($keyword);
	
	/**
	 * 设置每页记录数
	 *
	 * @param integer $pageSize 大于0的数字
	 */
	public function setPageSize($pageSize);
	
	/**
	 * 取得每页记录数
	 *
	 * @return integer
	 */
	public function getPageSize();
	
	/**
	 * 设置链接的路径
	 *
	 * @param string $path 路径
	 */
	public function setPath($path);
	
	/**
	 * 设置属性
	 *
	 * @param array $properties 属性列表
	 */
	public function setProperties(array $properties);
	
	/**
	 * 设置查询
	 *
	 * @param mixed $query string|array
	 */
	public function setQuery($query);
	
	/**
	 * 添加记录
	 *
	 * @param mixed $row 记录
	 */
	public function addRow($row);
	
	/**
	 * 添加记录集
	 *
	 * @param array $rows 记录集
	 */
	public function addRows(array $rows);
	
	/**
	 * 取得记录集
	 *
	 * @return array
	 */
	public function getRows();
	
	/**
	 * 设置记录集
	 *
	 * @param array $rows 记录集
	 */
	public function setRows(array $rows);
}


?>